#include "TestFunctionInitializer.h"


std::map<std::string, TestFunction*>& TestFunctionInitializer::_getRegTestFuns()
{
    static std::map<std::string, TestFunction*> _regTestFuns;
    return _regTestFuns;
}


TestFunction* TestFunctionInitializer::getTestFun(std::string funName)
{
   std::map<std::string, TestFunction*> &regTestFuns = _getRegTestFuns();
   if (regTestFuns.count(funName) == 0)
        return NULL;
    return regTestFuns[funName];
}


void TestFunctionInitializer::getAllTestFunsInClass(std::string className, std::vector<std::string> *funNames)
{
    std::map<std::string, TestFunction*> &regTestFuns = _getRegTestFuns();
    std::map<std::string, TestFunction*>::iterator it = regTestFuns.begin();
    for (; it != regTestFuns.end(); ++ it)
    {
        std::string fn = it->first;
        std::string cn = fn.substr(0, fn.rfind("::"));
        if (cn == className)
            funNames->push_back(fn);
    }
}


